/**********************************************************************************************************************
 * Copyright (c) Prophesee S.A.                                                                                       *
 *                                                                                                                    *
 * Licensed under the Apache License, Version 2.0 (the "License");                                                    *
 * you may not use this file except in compliance with the License.                                                   *
 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0                                 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed   *
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                      *
 * See the License for the specific language governing permissions and limitations under the License.                 *
 **********************************************************************************************************************/

#ifndef METAVISION_SDK_BASE_EVENT_POINTCLOUD_H
#define METAVISION_SDK_BASE_EVENT_POINTCLOUD_H

#include <vector>

namespace Metavision {

/// @brief Class representing a point cloud frame of 3D events
class PointCloud {
public:
    /// @brief Class representing a 3D point:
    class Point3D {
    public:
        float X, Y, Z;  // 3d coordinates of reprojected point
        int channel_id; // channel number
        int line_id;    // repetition number
    };

    /// @brief Frame number
    unsigned int frame_id;
    /// @brief Maximum depth within the frame
    float max_depth;
    /// @brief List of 3D events
    std::vector<Point3D> points;
};

} // namespace Metavision

#endif /* METAVISION_SDK_BASE_EVENT_POINTCLOUD_H */
